#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
数据库配置示例文件
展示如何配置不同类型的数据库
"""

from .config import DatabaseConfig

# ============================================================================
# PostgreSQL 配置示例
# ============================================================================

# 方式1: 直接配置字典
POSTGRESQL_CONFIG_EXAMPLE = {
    'type': 'postgresql',
    'host': 'localhost',          # 数据库主机地址
    'port': 5432,                 # 数据库端口
    'database': 'wechat_robot',   # 数据库名称
    'username': 'postgres',       # 数据库用户名
    'password': 'your_password',  # 数据库密码
    'options': {
        'sslmode': 'prefer',      # SSL模式: disable, allow, prefer, require
        'connect_timeout': 10,    # 连接超时时间（秒）
        'application_name': 'wechat_robot'  # 应用名称
    }
}

# 方式2: 环境变量配置（推荐用于生产环境）
# 在系统环境变量或 .env 文件中设置以下变量：
"""
# PostgreSQL 环境变量配置
DB_TYPE=postgresql
DB_HOST=localhost
DB_PORT=5432
DB_NAME=wechat_robot
DB_USER=postgres
DB_PASSWORD=your_password
DB_SSLMODE=prefer
DB_TIMEOUT=10
DB_APP_NAME=wechat_robot
"""

# ============================================================================
# MySQL 配置示例
# ============================================================================

MYSQL_CONFIG_EXAMPLE = {
    'type': 'mysql',
    'host': 'localhost',
    'port': 3306,
    'database': 'wechat_robot',
    'username': 'root',
    'password': 'your_password',
    'options': {
        'charset': 'utf8mb4',
        'connect_timeout': 10
    }
}

# MySQL 环境变量配置
"""
DB_TYPE=mysql
DB_HOST=localhost
DB_PORT=3306
DB_NAME=wechat_robot
DB_USER=root
DB_PASSWORD=your_password
DB_CHARSET=utf8mb4
DB_TIMEOUT=10
"""

# ============================================================================
# SQLite 配置示例（默认）
# ============================================================================

SQLITE_CONFIG_EXAMPLE = {
    'type': 'sqlite',
    'database': 'wechat_robot.db',  # 数据库文件名
    'path': None  # 如果为None，将使用项目根目录
}

# SQLite 环境变量配置
"""
DB_TYPE=sqlite
DB_NAME=wechat_robot.db
DB_PATH=/path/to/database/directory  # 可选，默认使用项目根目录
"""

# ============================================================================
# 使用示例
# ============================================================================

def get_database_url_examples():
    """
    获取不同数据库配置的连接URL示例
    """
    print("=== 数据库连接URL示例 ===")
    
    # PostgreSQL
    pg_url = DatabaseConfig.get_database_url(POSTGRESQL_CONFIG_EXAMPLE)
    print(f"PostgreSQL: {pg_url}")
    
    # MySQL
    mysql_url = DatabaseConfig.get_database_url(MYSQL_CONFIG_EXAMPLE)
    print(f"MySQL: {mysql_url}")
    
    # SQLite
    sqlite_url = DatabaseConfig.get_database_url(SQLITE_CONFIG_EXAMPLE)
    print(f"SQLite: {sqlite_url}")

def init_database_with_config_examples():
    """
    展示如何在应用中使用不同的数据库配置
    """
    from flask import Flask
    from utils.database import init_database
    
    app = Flask(__name__)
    
    # 方式1: 使用配置字典
    # init_database(app, config_dict=POSTGRESQL_CONFIG_EXAMPLE)
    
    # 方式2: 使用环境变量（推荐）
    # 确保设置了相应的环境变量，然后调用：
    # init_database(app)  # 会自动从环境变量加载配置
    
    # 方式3: 直接指定连接URL
    # database_url = "postgresql://postgres:password@localhost:5432/wechat_robot"
    # init_database(app, database_url=database_url)
    
    return app

# ============================================================================
# 生产环境配置建议
# ============================================================================

"""
生产环境配置建议：

1. 使用环境变量管理敏感信息（如密码）
2. 启用SSL连接（PostgreSQL/MySQL）
3. 配置连接池参数
4. 设置合适的超时时间
5. 使用专用数据库用户，限制权限

示例 .env 文件（生产环境）：

# 数据库配置
DB_TYPE=postgresql
DB_HOST=your-db-host.com
DB_PORT=5432
DB_NAME=wechat_robot_prod
DB_USER=wechat_robot_user
DB_PASSWORD=your-secure-password
DB_SSLMODE=require
DB_TIMEOUT=30
DB_APP_NAME=wechat_robot_prod

# 其他配置
FLASK_ENV=production
SECRET_KEY=your-secret-key
"""

if __name__ == '__main__':
    # 运行示例
    get_database_url_examples()